import babel from "@babel/core"; //core包括corejs corejs用于处理新特性
import presetEnv from "@babel/preset-env"; // es6 转 es5
import react from "@babel/preset-react"; // 支持jsx
import { visitors } from "@babel/traverse";
import fs from "node:fs";

const code = fs.readFileSync("./test.js", "utf-8")

// 箭头函数 =》 function
// types 包含了各种ast的方法
const transformFunction = ({types:t}) => {
    return {
        name:"transformFunction",
        visitor:{
            // 匹配
            ArrowFunctionExpression(path){
                // console.log(path.node)
                // 箭头函数转成普通function
                const node = path.node
                // 转换成普通的function
                // async params body
                const arrowFunction = t.functionExpression(
                    null, //匿名函数
                    node.params, //函数中的参数
                    t.blockStatement([t.returnStatement(node.body)]),
                    node.async
                )
                path.replaceWith(arrowFunction)
            }
        }
    }
};


const result = babel.transform(code, {
//   presets: [[presetEnv, { useBuiltIns: "usage", corejs: 3 }], react],
    plugins: [transformFunction],
});
console.log(result.code);
